#!/bin/bash
 
# 公共路径
BASE_PATH="/home/projects/report"
 
# 应用名称(就是jar包名称,不包含后缀)
JAR_NAME="report"
 
# 定义JAR文件的路径
JAR_PATH="$BASE_PATH/$JAR_NAME.jar"
 
# 定义Java虚拟机的选项
JAVA_OPTS="-Xms1024m -Xmx2048m"
#JAVA_OPTS="-server -Xms512M -Xmx1024M -XX:PermSize=128M -XX:MaxPermSize=512M -Xss512KB"
 
# 定义PID文件的路径 自定义用法
PID_PATH="$BASE_PATH/$JAR_NAME.pid"
 
# 定义日志文件的路径
LOG_PATH="$BASE_PATH/$JAR_NAME.log"
 
 
start() {
  # 检查是否已运行
  if [ -f $PID_PATH ] && ps -p $(cat $PID_PATH) > /dev/null; then
    echo "应用程序已经在运行。"
    exit 0
  fi
 
  # 启动应用
  echo "开始启动应用程序"
  #nohup java $JAVA_OPTS -jar $JAR_PATH > $LOG_PATH 2>&1 &
  nohup /home/soft/jdk8/bin/java $JAVA_OPTS -jar $JAR_PATH --spring.config.local=/home/projects/report/application.yml > $LOG_PATH 2>&1 &
  echo $! > $PID_PATH
  
  # 检查应用是否启动
  sleep 5 # 等待一些秒来确保应用有时间启动
  if ps -p $(cat $PID_PATH) > /dev/null; then
    echo "应用程序启动成功."
  else
    echo "应用程序启动失败."
    exit 1
  fi
}
 
stop() {
  # 检查是否正在运行
  if [ ! -f $PID_PATH ] || ! ps -p $(cat $PID_PATH) > /dev/null; then
    echo "应用程序没有在运行。"
    exit 0
  fi
 
  # 停止应用
  echo "开始停止应用程序."
  kill $(cat $PID_PATH)
  rm $PID_PATH
  echo "应用程序已停止成功."
}
 
restart() {
  stop
  start
}
 
# 基于命令行参数执行相应操作
case $1 in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    restart
    ;;
  *)
    echo "用法: $0 {start|stop|restart}"
    exit 1
    ;;
esac
 
